package com.xqb.modules.domain.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xqb.common.annotation.Excel;
import com.xqb.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * 课程目录对象 les_course_catalogue
 * 
 * @author xqb
 * @date 2024-10-14
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class LesCourseCatalogue extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 课程目录id */
    private Long id;

    /** 目录名称 */
    @Excel(name = "目录名称")
    private String name;

    /** 是否支持试看 */
    @Excel(name = "是否支持试看")
    private Long trailer;

    /** 课程id */
    @Excel(name = "课程id")
    private Long courseId;

    /** 目录类型1：章，2：节，3：测试 */
    @Excel(name = "目录类型1：章，2：节，3：测试")
    private Long type;

    /** 所属章id，只有小节和测试有该值，章没有，章默认为0 */
    @Excel(name = "所属章id，只有小节和测试有该值，章没有，章默认为0")
    private Long parentCatalogueId;

    /** 媒资id */
    @Excel(name = "媒资id")
    private Long mediaId;

    /** 视频id */
    @Excel(name = "视频id")
    private Long videoId;

    /** 视频名称 */
    @Excel(name = "视频名称")
    private String videoName;

    /** 直播开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "直播开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date livingStartTime;

    /** 直播结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "直播结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date livingEndTime;

    /** 是否支持回放 */
    @Excel(name = "是否支持回放")
    private Long playBack;

    /**
     * 视频时长，以秒为单位
     */
    @Excel(name = "视频时长，以秒为单位")
    private Long mediaDuration;

    /**
     * 用于章节排序
     */
    @Excel(name = "用于章节排序")
    private Long cIndex;

    /**
     * 部门id
     */
    @Excel(name = "部门id")
    private Long depId;

    /**
     * 逻辑删除
     */
    @TableLogic(value = "0", delval = "1")
    private Long delFlag;
    /**
     * 是否完成·
     */
    @TableField(exist = false)
    private Integer finished;
    /**
     * 视频观看时间点
     */
    @TableField(exist = false)
    private Long moment;
    @TableField(exist = false)
    private List<LesCourseCatalogue> children;


}
